package com.qingxin.sys.smslib;

import java.util.ArrayDeque;

public class SmsInDataDeque {

	private static final ArrayDeque<SmsData> DATA_DEQUE = new ArrayDeque<>();
	
	/**
	 * 向队列添加一个新数据
	 * @param smsData
	 */
	public static void push(SmsData smsData){
		if(!SmsInDataThread.isActive()){
			return;
		}
		synchronized(DATA_DEQUE){
			DATA_DEQUE.addLast(smsData);
			DATA_DEQUE.notifyAll();
		}
	}
	
	
	/**
	 * 获取并移除第一个数据，如果队列为空，则返回 null
	 * @return
	 */
	public static SmsData poll(){
		synchronized(DATA_DEQUE){
			return DATA_DEQUE.poll();
		}
	}
	
	
	/**
	 * 清空此队列
	 */
	public static void clear(){
		synchronized(DATA_DEQUE){
			DATA_DEQUE.clear();
		}
	}
	
	
	/**
	 * 唤醒发送线程
	 * @return
	 */
	public static void awake(){
		synchronized(DATA_DEQUE){
			DATA_DEQUE.notifyAll();
		}
	}
	
	
	public static int size(){
		synchronized(DATA_DEQUE){
			return DATA_DEQUE.size();
		}
	}
	
	
	/**
	 * 如果队列为空则挂起线程
	 */
	protected static void tryWait(){
		synchronized (DATA_DEQUE) {
			if(DATA_DEQUE.size()==0){
				try {
					DATA_DEQUE.wait();
				} catch (InterruptedException e) {
				}
			}
		}
	}
	
}
